// const str = '这是一段含有\n换行符的字符串';
// const escapedStr = str.replace(/\n/g, '\n');
// console.log(escapedStr);

// 使用filter来进行对比数据是否存在
const array1 = [{id: 1,index:001, name: 'Alice'}, {id: 2,index:002, name: 'Bob'}, {id: 3,index:003, name: 'Charlie'}];
const array2 = [{id: 2,index:002, name: 'Bob'}, {id: 4,index:004, name: 'David'}, {id: 5, index:005,name: 'Edward'}];
 
// 使用 filter() 方法和 find() 方法提取出 array1 中不在 array2 中存在的对象
const uniqueObjects = array1.filter(obj1 => array2.find(obj2 => obj1.id && obj1.index === obj2.id && obj2.index));
 
// console.log('array1 中不在 array2 中存在的对象为：', uniqueObjects);

// 第一步先调用旗帜的接口，然后在调用数据中心的接口，进行数据对比，对比的是tree树下点击的具体的某个的id和缩略图的某个id
// 进行下述的对比，对比出来之后将数据放到由data定义的一个数组中，然后渲染的数据就是重新定义的这个数组
// 第二步小图放的是数组格式的内容---由渲染数据和传参来看出，大图放的是base64的整体图片
// 第三步上方要有个勾选之后显示和不显示的框，然后缩略图边上要有对应可以勾选的radio或者checkbox
// 第四步需要将name-fileName展示在框里 id-elecId是对比返回的接口里面是否有对应的elecid对应的值，然后进行比较
// 比较好之后该显示的显示，不该显示的就隐藏
////////////////////////////////////////////////
const apiData1 = [
    { id: 1, name: 'John', age: 20 },
    { id: 2, name: 'Mary', age: 30 },
    { id: 3, name: 'Peter', age: 25 }
  ];
  
  const apiData2 = [
    { id: 2, job: 'Engineer' },
    { id: 3, job: 'Doctor' },
    { id: 4, job: 'Teacher' }
  ];
  
  // 定义一个空数组用于存储对比结果
  const comparedData = [];
  
  // 遍历 apiData1 数组
  apiData1.forEach(data1 => {
    // 在 apiData2 中查找与当前数据的 id 相同的元素
    const data2 = apiData2.find(item => item.id === data1.id);
    if (data2) { // 如果找到了相同的元素，则将两个数据合并，并添加到 comparedData 中
      comparedData.push({ ...data1, ...data2 });
    }
  });
  
  // console.log(comparedData); // 输出 [{ id: 2, name: 'Mary', age: 30, job: 'Engineer' }, { id: 3, name: 'Peter', age: 25, job: 'Doctor' }]
  


  var fileName = "4-1-1-001.jpg"; // 原始文件名
  // 获取最后一个点号之前的部分，即为文件名
  var fileNameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.'));
  // console.log("文件名：", fileNameWithoutExtension);



  function unique (arr) {
    return [...new Set(arr)];
  }
   var arr=[1,1,2,4,true,true,false,false,null,null,"af","he","af",undefined,undefined,{},{},NaN,NaN];
  //  console.log(unique(arr));
    // NaN可以去重
  


    // const empowerLable = '干部履历表_4-1-1-004,干部履历表_4-1-1-005';
    // const matches = empowerLable.match(/(.*?)_(.*?),(.*?)_(.*)/);
    
    // const name1 = matches[1]; // 干部履历表
    // const fileName1 = matches[2]; // 4-1-1-004
    // const name2 = matches[3]; // 干部履历表
    // const fileName2 = matches[4]; // 4-1-1-005
    
    // // console.log(name1); // 干部履历表
    // // console.log(fileName1); // 4-1-1-004
    // // console.log(name2); // 干部履历表
    // // console.log(fileName2); // 4-1-1-005

    // console.log(Function.prototype.hasOwnProperty('call'))  //true
    // console.log(Function.prototype.hasOwnProperty('apply'))  //true
    // console.log(Function.prototype.hasOwnProperty('bind'))  //true
    // console.log(Function.prototype)
    
    

// // 只匹配和括号中对应的值
//     let reg = /^(18|29)$/;
//     console.log(reg.test('18'));
//     console.log(reg.test('29'));
//     console.log(reg.test('129'));
//     console.log(reg.test('189'));


//匹配的含义是：\d还是代表0-9
// let reg = /^[(10-29)]$/;
// console.log(reg.test('12'))
// console.log(reg.test('29'))
// console.log(reg.test('10'))
// console.log(reg.test('9'))

// let reg1 = /^18|29$/;
// console.log(reg1.test('18'))
// console.log(reg1.test('29'))
// console.log(reg1.test('129'))
// console.log(reg1.test('829'))
// let reg2 = /^(18|29)$/ 
// console.log(reg2.test('18'))
// console.log(reg2.test('29'))
// console.log(reg2.test('129'))
// console.log(reg2.test('829'))


//第二个作用：使用exec捕获的时候不仅可以得到整个大正则的结果，也会分别拿到每一个分组内的
// let reg1 =/^([1-9]\d{5})((19|20)\d{2})(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}(\d|x)$/i;//验证身份证号
// let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10})?$/;
// console.log(reg.test('古力那扎尔·拜合提亚尔'));



// let sy = Symbol("KK");
// console.log(sy);   // Symbol(KK)
// typeof(sy);        // "symbol"
 
// // 相同参数 Symbol() 返回的值不相等
// let sy1 = Symbol("KK"); 
// console.log(sy1);
// typeof(sy1); 
// console.log(sy == sy);      // false

